package com.yuzou.十月马蹄杯;

import java.util.Scanner;

public class 构造原理 {
    static int  n;//传入的核外电子总数；
    static int[][] sum = new int[10][5];//存储第i能层第j能级能容纳的电子数；
    static int[] cnt = {0,2,6,10,14};//各能级能容纳的最大电子数；
    static char[] ch = {'#','s','p','d','f'};
    static void f(int x,int i,int j){
        //填充当前能级，取当前能寄容量和剩余电子数的最小值；
        sum[i][j] = Math.min(cnt[j],x);
        //计算填充之后剩余的电子数；
        int y = x - cnt[j];
        if(y <= 0){
            return;
        }
        if(j == 1){
            //数学归纳法求得；
            j = i / 2 + 1;
            i = (i + 1) / 2 + 1;
        }else{
            i++;//能层增加
            j--;//能级减少
        }
        //递归调用到下一个能级；
        f(y,i,j);
    }

    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        n = scanner.nextInt();
        f(n,1,1);
        //遍历填充结果
        for(int i = 1; ;i++){
            //如果当前层的s能级没有填充，则结束遍历；
            if(sum[i][1] == 0) break;
            //遍历可能的四种能级；
            for(int j = 1; j <= 4; j++){
                if(sum[i][j] != 0){
                    System.out.print(i +""+ ch[j] + sum[i][j] + " ");
                }
            }
            System.out.println();
        }
    }
}
